package com.hanamaki.oop.demo05;

/**
 * 多态的注意事项
 * 1. 多态是方法的多态，属性没有多态
 * 2. 多态：一定要满足子类和父类有关联，子类和父类 是可以类型转换的
 * 3. 多态的存在条件：存在继承关系，方法必须重写，父类的引用指向了子类
 *
 */
public class Application {

    public static void main(String[] args) {


        /* 一个对象的实例类型是确定的 */
        new Student();
        new Person();

        /* 但是可以指向的引用类型就不确定了；  父类的引用指向子类 */
        Student s1 = new Student();
        Person s2 = new Student();
        Object s3 = new Student();
        /* 在多态中 能调用的方法都是自己的或者父类的 */
        /* 一个实例化之后的对象，能够执行的方法，主要是看左边的类型，和右边的关系不大 */
        s2.run(); // 子类继承父类重写了 父类的方法就会执行子类的方法

        s1.run();

        /* 类型转换 */
        ((Student)s2).eat();
        s1.eat();



    }

}
